#!/bin/bash

# 这是一款采用 Gtkdialog 来编写的 ykdl 视频下载程序的图形前端。
# 本程序在 GPL v2 的条款下分发。
# 安装和使用详见 README.md 文档。
# 脚本的核心下载功能由 ykdl 提供。
# (c) 2023 LanXing <lanxing0821@126.com>

### 脚本的执行路径 ###
export SCRIPT_RUN_PATH="$(readlink -f "$0")"

### 脚本的工作目录 ###
export WORKDIR="$(dirname "$SCRIPT_RUN_PATH")"

### 导出环境 ###
export XDG_DATA_DIRS="$WORKDIR/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share:/usr/share/plasma}"
export PATH="$WORKDIR/bin:${PATH:-/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin}"

case ":${PATH}:" in
	*:"$HOME/.local/bin":*)
	;;
	*)  export PATH="$HOME/.local/bin:$PATH"
	;;
esac

### 检测是否已经安装 gtkdialog ###
if command -v gtkdialog > /dev/null ;then :
else
	zenity --title="错误信息" --error --width 240 --text="监测到你的系统并没有安装 gtkdialog ，脚本运行需要 gtkdialog ！"
	exit
fi

### 重要提醒对话框 ###
remind_info(){
	cat <<-EOF | gtkdialog --stdin
	<window title="重要提醒" window-position="3" allow-grow="false" icon-name="gd-alert-triangle">
		<vbox>
			<hbox space-expand="true" space-fill="true" width-request="500">
				<pixmap theme-icon-size="64">
					<input file icon="gd-message-square"></input>
				</pixmap>
				<vbox>
				<text xalign="0" justify="0" wrap="true" use-markup="true">
					<label>"
	
	脚本的核心下载功能需要 <span fgcolor='Crimson'><b>ykdl</b></span> 的支持，请先到"
					</label>
				</text>
				<eventbox hover-selection="true">
					<text xalign="0" justify="0" wrap="true" use-markup="true">
						<label>"    
			<span fgcolor='CornflowerBlue'><i><u>https://github.com/SeaHOH/ykdl</u></i></span>
						"</label>
					</text>
					<action signal="button-press-event">xdg-open "https://github.com/SeaHOH/ykdl" &</action>
				</eventbox> 
				<text xalign="0" justify="0" wrap="true" use-markup="true">
					<label>"下载 <span fgcolor='Crimson'><b>ykdl</b></span> 。
	
	<span fgcolor='BlueViolet'><b>现在是否转到指定站点？</b></span>
					"</label>
				</text>
				</vbox>
			</hbox>
			<hseparator></hseparator>
			<hbox>
				<button theme-icon-size="16" width-request="80">
					<label>"  是"</label>
					<input file icon="gd-check-circle"></input>
					<action>exit:Yes</action>
				</button>
				<button theme-icon-size="16" width-request="80">
					<label>"  否"</label>
					<input file icon="gd-slash"></input>
					<action>exit:No</action>
				</button>
			</hbox>
		</vbox>
	</window>
	EOF
}

### 检测是否已经安装 ykdl ###
if command -v ykdl > /dev/null ;then :
else
	for i in $(remind_info | grep -E '^[a-z_A-Z][a-zA-Z_0-9]*=".*"[[:blank:]]*$'); do
		eval $i
	done
	if [ "$EXIT" = "Yes" ]; then
		xdg-open "https://github.com/SeaHOH/ykdl"
	fi
	exit
fi

### 安装对话框 ###
install_dialog(){
	cat <<-EOF | gtkdialog --stdin
	<window title="安装" window-position="3" allow-grow="false" icon-name="gd-message-circle">
		<vbox>
			<hbox space-expand="true" space-fill="true" width-request="500">
				<pixmap theme-icon-size="64">
					<input file icon="gd-message-square"></input>
				</pixmap>
				<text xalign="0" justify="0" wrap="true" use-markup="true">
					<label>"
	
			<span size='x-large'>您是否要为 <span fgcolor='Purple'><b>GUIykdl</b></span> 创建启动器？</span>
		
	创建启动器可以让您很方便地从<span fgcolor='CornflowerBlue'><b>应用程序菜单</b></span>中打开应用。
					"</label>
				</text>
			</hbox>
			<hseparator></hseparator>
			<hbox>
				<button theme-icon-size="16" width-request="80">
					<label>"  是"</label>
					<input file icon="gd-check-circle"></input>
					<action>exit:Yes</action>
				</button>
				<button theme-icon-size="16" width-request="80">
					<label>"  否"</label>
					<input file icon="gd-slash"></input>
					<action>exit:No</action>
				</button>
			</hbox>
		</vbox>
	</window>
	EOF
}

### 将脚本集成到系统 ###
if [ $EUID -ne 0 ]; then
	DESTINATION_DIR_DESKTOP="$HOME/.local/share/applications"
else
	DESTINATION_DIR_DESKTOP="/usr/share/applications"
fi
desktopFilePath="$DESTINATION_DIR_DESKTOP/GUIykdl.desktop"
# 检测是否存在桌面配置文件
if [ -e "$desktopFilePath" ] ; then :
else
	for i in $(install_dialog | grep -E '^[a-z_A-Z][a-zA-Z_0-9]*=".*"[[:blank:]]*$'); do
		eval $i
	done
	if [ "$EXIT" = "Yes" ]; then
		cat > "$desktopFilePath" <<-EOF
		#!/usr/bin/env xdg-open
		[Desktop Entry]
		Type=Application
		Version=1.0
		Name=GUIykdl
		Exec="$WORKDIR/AppRun" %u
		Icon=GUIykdl
		GenericName=优酷下载器
		Comment=ykdl: 专注于中国大陆视频网站的视频下载程序
		StartupWMClass=GUIykdl
		Categories=Network;Shell
		Terminal=false
		NoDisplay=false
		Hidden=false
		
		Actions=uninstall;
		
		[Desktop Action uninstall]
		Icon=edit-delete
		Name=卸载 GUIykdl
		Exec="$WORKDIR/bin/uninstall.sh"
		EOF
		xdg-icon-resource install --novendor --size 128 "$WORKDIR/GUIykdl.png"
		xdg-desktop-menu forceupdate
	fi
fi

### 接受参数并阻止脚本多次执行（只允许运行一个实例） ###
url="$1"
export URLPIPELINE="${TMPDIR:=/tmp}/ykdl_UrlPipeline"
[ -f "$URLPIPELINE" ] || > "$URLPIPELINE"
[ "${url//[[:space:]]/}" ] && echo -n " $url" >> "$URLPIPELINE"
mwpid=$(ps -ef | grep "gtkdialog --class=GUIykdl --name=GUIykdl --stdin"  | grep -v grep | awk '{printf $2}')
if [ "$mwpid" ];then
	wmctrl -a "GUIykdl" -x			# 快速切换并激活主窗口
	exit
fi

### 存储配置文件的目录 ###
export CONFIG_DIR="$WORKDIR/config"								# 所有配置文件都存在这里
export WINDOW_CONF="$CONFIG_DIR/window.conf"					# 窗口配置文件
export DEFAULT_OPTIONS="$CONFIG_DIR/default-options.conf"		# 预设选项配置文件
export SITE_LIST="$CONFIG_DIR/sitelist.conf"					# 记录支持站点
export PLAYER_LIST="$CONFIG_DIR/player-list.conf"				# ykdl 的 -p 选项能调用的播放器列表
export MERGED_INPUTRC="$CONFIG_DIR/merged-inputrc"				# 合并初始化文件

### 生成窗口配置文件，你可以在图形界面中修改它 ###
[ -d "$CONFIG_DIR" ] || mkdir "$CONFIG_DIR"
[ -f "$WINDOW_CONF" ] || cat > "$WINDOW_CONF" <<EOF
# 这是窗口配置文件，你可以在这个文件中进行修改，也可以在图形界面中修改它
# 配置内容包括窗口外观和终端设置两部分

[window]
# 窗口的透明度，允许值：[0-1]，可以是小数
Opacity="1.00"
# 按钮等控件中的图标颜色，允许值：16进制标准颜色名称，#rgb或#rrggbb
IconColor="#4a1792"

[terminal]
# 终端字体，允许值：字体名称，一般表示形式为 "名称 [样式] [大小]"
FontName="Hack 9"
# 背景色调颜色，允许值：16进制标准颜色名称，#rgb或#rrggbb
BackgroundTintColor="#a7b4bd"
# 文本背景色，允许值：16进制标准颜色名称，#rgb或#rrggbb
TextBackgroundColor="#ffffff"
# 文本前景色，允许值：16进制标准颜色名称，#rgb或#rrggbb
TextForegroundColor="#272728"
# 粗体文本前景色，允许值：16进制标准颜色名称，#rgb或#rrggbb
BoldForegroundColor="#ff0e0c"
# 暗淡文本前景色，允许值：16进制标准颜色名称，#rgb或#rrggbb
DimForegroundColor="#55077f"
# 光标背景颜色，允许值：16进制标准颜色名称，#rgb或#rrggbb
CursorBackgroundColor="#ffffff"
# 高亮文本背景颜色
HighlightBackgroundColor="#6a0f05"
EOF

# 遍历配置文件，并读取其中的变量
I=$IFS; IFS=$'\n'
for TAB in $(cat "$WINDOW_CONF" | grep -E '^[a-z_A-Z][a-zA-Z_0-9]*=".*"[[:blank:]]*$');do
	eval $TAB
done
IFS=$I

# 如果图标颜色与 $IconColor 变量不符，则替换图标颜色为 $IconColor 
IocnPath="$WORKDIR/share/icons/hicolor/scalable/actions"
OneSvg=$(ls -t "$IocnPath"/*.svg | sed -n '1p')
if echo "$OneSvg" | xargs grep -q "$IconColor" ;then :
else
	SvgColor=$(cat "$OneSvg" | grep -o '#.*' | cut -d\" -f1)
	for i in $(ls "$IocnPath"/*.svg) ;do
		sed -i "s/$SvgColor/${IconColor:-#4a1792}/g" "$i"
	done
fi

### 读取用户目录 ###
I=$IFS; IFS=$'\n'
for XDG_DIR in $(cat "$HOME/.config/user-dirs.dirs" | grep -E '^[a-z_A-Z][a-zA-Z_0-9]*=".*"[[:blank:]]*$');do
	eval "$XDG_DIR"
done
IFS=$I
: ${XDG_DOWNLOAD_DIR:=${HOME}/Downloads}

### 预设选项，你可以在图形界面中修改它 ###
[ -f "$DEFAULT_OPTIONS" ] || cat > "$DEFAULT_OPTIONS" <<EOF
# 这个配置文件包含了窗口初始化时，操作 ykdl 所需的默认选项；
# 在这个文件中（即 $DEFAULT_OPTIONS）所做的修改，都会在下次启动程序保持生效。

[default options]
# 预设选项的可选值是一个布尔常量（true 或 false），当值为true时，与选项相关的绘图指示符将处于被勾选状态
# 当然，这只是窗口初始化时小部件的活动状态，并不意味着实际操作中不能更改

# -F FORMAT，--format FORMAT，指定视频格式代码 (具体查看 -i选项 的输出)或级别
format_opt="false"
# -o OUTPUT_DIR，--output-dir OUTPUT_DIR，指定下载多媒体的输出目录，这是固定选项，无需修改
# output_dir_opt="true"
# -O OUTPUT_NAME，--output-name OUTPUT_NAME，指定下载多媒体的文件名称，这是固定选项，无需修改
# output_name_opt="true"
# --proxy [SCHEME://]HOST:PORT | system | none，指定网络代理
proxy_opt="false"
# -t SECONDS，--timeout SECONDS，设置网络传输超时时长
timeout_opt="false"
# --fail-retry-eta SECONDS，如果设置数值大于剩余完成时间则自动重试失败的下载
fail_retry_eta_opt="false"
# -j NUM，--jobs NUM，指定最多可同时下载的任务数量
jobs_opt="false"
# -l，--playlist，将所给的多媒体 URL 作为播放列表进行下载
playlist_opt="false"
# -s INDEX_NUM，--start INDEX_NUM，配合 -l 使用，从指定的位置开始下载列表
start_opt="false"
# -k，--insecure，允许不安全的 SSL 连接
insecure_opt="false"
# --no-merge，不合并视频分片
no_merge_opt="false"
# --no-sub，不下载字幕文件
no_sub_opt="false"
# --no-fail-confirm，重试失败的下载时无需等待人工确认，非阻塞，适合任务式调用
no_fail_confirm_opt="false"
# --debug，打印调试信息
debug_opt="false"

[value]
# 视频质量，允许值（不含括号内容）：8k（4320p）4k（2160p）2k（1440p）BD（1080p）TD（720p）HD（540p）SD（360p）LD（210p）
FORMAT="BD"
# 输出目录
OUTPUT_DIR="$XDG_DOWNLOAD_DIR/Video"
# 输出名称，随便写，后继再改；也可以不写
OUTPUT_NAME=""
# 网络代理，采用[SCHEME://]HOST:PORT的形式
PROXY=""
# 默认超时时长（单位：秒）
TIMEOUT="60"
# 重试失败时长（单位：秒）
FAIL_RETRY_ETA="3600"
# 默认指定位置，允许值：[0-100]
START="0"
# 默认任务数量，允许值：[0-100]
JOBS="4"
# 设置 -p 选项所调用的播放器
PLAYER="mpv"
EOF

I=$IFS; IFS=$'\n'
for TAB in $(cat "$DEFAULT_OPTIONS" | grep -E '^[a-z_A-Z][a-zA-Z_0-9]*=".*"[[:blank:]]*$');do
    eval $TAB
done
IFS=$I

[ -d "$OUTPUT_DIR" ] || mkdir -p "$OUTPUT_DIR"

### 支持的站点 ###
[ -f "$SITE_LIST" ] || cat > "$SITE_LIST" <<EOF
[site-list]
# 部分已经挂掉的站点可能已经变成钓鱼网站，出于安全考虑，已将其移除
# 更多支持站点可以在 https://github.com/SeaHOH/ykdl/wiki/sites-status 中查询

AcFun弹幕视频网|https://www.acfun.cn|✓| | |支持4k 
芒果TV|https://www.mgtv.com|✓| | | 
网易云音乐|https://music.163.com|✓|✓|✓| 
网易BoBo|https://www.bobo.com| |✓| |已挂 
网易视频|https://v.163.com|✓|✓|✓| 
网易CC直播|https://cc.163.com|✓|✓|✓| 
爆米花视频|https://www.baomihua.com/|✓| | | 
哔哩哔哩|https://www.bilibili.com|✓|✓| |下载速度较慢，建议调用 axel 来加速 
豆瓣音乐|https://music.douban.com| | |✓| 
优酷|https://www.youku.com|✓| | | 
腾讯视频|https://v.qq.com|✓|✓| |某些视频下载速度慢，没有修复的好办法
央视网|https://www.cctv.com|✓| | | 
中国网络电视台|https://www.cntv.cn|✓| | | 
爱奇艺视频|https://www.iqiyi.com|✓|✓| |概率失败，多试几次，支持4k 
爱奇艺直播|https://live.iqiyi.com|✓|✓| | 
奇秀|https://x.pps.tv|✓|✓| | 
乐视视频|https://www.le.com|✓|✓| | 
搜狐视频|https://tv.sohu.com|✓| | | 
触手直播|https://www.chushou.tv| |✓| |已挂 
百度音乐|https://music.baidu.com| | |✓|已挂
抖音|https://www.douyin.com|✓|✓| |已经放弃支持 
斗鱼直播|https://www.douyu.com|✓|✓| | 
风行网|https://www.fun.tv|✓| | |已经放弃支持 
黑白直播| | |✓| |已挂
花椒直播|https://www.huajiao.com| |✓| |已经放弃支持 
火猫直播|https://www.huomao.com| |✓| |已挂 
虎牙直播|https://www.huya.com|✓|✓| |已经放弃支持 
凤凰视频|https://v.ifeng.com|✓| | |已经放弃支持 
齐鲁网|https://www.iqilu.com|✓| | |已经放弃支持 
激动网|https://www.joy.cn|✓| | |激动网经常挂掉
看看新闻|https://www.kankanews.com|✓| | | 
酷6网|https://www.ku6.com|✓| | | 
酷我音乐|https://www.kuwo.cn|✓| | | 
来疯网|https://www.laifeng.com| |✓| | 
荔枝FM|https://www.lizhi.fm| | |✓|已经放弃支持 
龙珠直播|https://longzhu.com| |✓| |已经放弃支持 
秒拍|https://www.miaopai.com|✓| | | 
熊猫直播| | |✓| |已挂
熊猫星颜| | |✓| |已挂
PP视频|https://www.pptv.com|✓| | |https://github.com/zhangn1985/ykdl/issues/208
全民直播| | |✓| |已挂
新浪视频|https://video.sina.com.cn|✓| | | 
淘宝|https://www.taobao.com| | | |已经放弃支持
天猫|https://www.tmall.com| | | |已经放弃支持
土豆|https://www.tudou.com|✓| | | 
微博|https://weibo.com|✓| | | 
虾米音乐|https://www.xiami.com| | |✓|已挂
音悦Tai|https://www.yinyuetai.com|✓| | | 
一直播|https://www.yizhibo.com| |✓| | 
章鱼直播| | |✓| |已挂
战旗直播| | |✓| | 
抓饭直播| | |✓| |已挂
嵌入视频网站| |✓| | |支持优酷、土豆、QQ、搜狐、酷6、网易、爱奇艺、微博视频等
通用嵌入音/视频| |✓| |✓|支持常见的音/视频嵌入或引用 (仅匹配页面中发现的第一个)
多媒体链接| |✓| |✓|支持直接下载大部分视频、音频、图片格式，列表支持仅限 m3u8
EOF

### ykdl 的 -p 选项能调用的播放器列表 ###
[ -f "$PLAYER_LIST" ] || cat > "$PLAYER_LIST" <<'EOF'
[player-list]
# 该配置文件包含了 ykdl 的 -p 选项所能调用的播放器列表。
# 如果默认提供的列表中没有你想要的播放器，可以在下面手动添加。
# 添加时，每个程序的可执行文件只能放在单独的一行，并且不能带有参数！
# 可执行文件可以是绝对路径名（名称中不得包含任何空白符），也可以是 $PATH 变量中的命令名称。

mpv
vlc
cvlc
mplayer
smplayer
firefox
chrome
chromium
vivaldi
EOF

### 合并初始化文件 ###
[ -f "$MERGED_INPUTRC" ] || cat > "$MERGED_INPUTRC" <<'EOF'
# 清除屏幕
clear

# 定义主提示符
unset PROMPT_COMMAND
PS1="𝙀𝙉𝘿 "

# 不启用历史功能
set +o history

# 防止因意外输入 EOF 字符时，导致 shell 退出
set -o ignoreeof

# 当终端收到 INT 或 QUIT 信号时，解除 ykdl 的运行状态
trap 'echo -n "false" > "$YKDL_RUN_STATUS"' INT QUIT
EOF

### 数据缓存目录，关机后会自动清空。 ###
export CACHE_DIR="/dev/shm/GUIykdl"
[ -d "$CACHE_DIR" ] || mkdir "$CACHE_DIR"

# 记录 ykdl 的运行状态，如果为 true ，则阻止执行某些指令。初始状态为 false
export YKDL_RUN_STATUS="$CACHE_DIR/YKDLRunStatus.device"
echo -n "false" > "$YKDL_RUN_STATUS"

# 接收命令，并转递给终端执行。初始命令合并 $MERGED_INPUTRC 文件
export CONSOLE_COMMAND="$CACHE_DIR/ConsoleCommand.device"
echo ". $MERGED_INPUTRC" > "$CONSOLE_COMMAND"

# 存储 ykdl 的 -i 选项的输出
export FILE_INFO="$CACHE_DIR/FileInfo.device"
> "$FILE_INFO"

# 可编辑的选项，下载器从中读取参数
export EDITABLE_OPTIONS="$CACHE_DIR/EditableOptions.device"
cat "$DEFAULT_OPTIONS" > "$EDITABLE_OPTIONS"

# 标签页索引
export NOTEBOOK_PAGE="$CACHE_DIR/NotebookPage.device"
echo -n 0 > "$NOTEBOOK_PAGE"

### 记录窗口的位置和大小，以备下次按此位置大小来启动主窗口 ###
export GEOMETRY="$CACHE_DIR/Geometry.device"
export GEOMETRY_BORDER="$CACHE_DIR/GeometryBorder.device"
export SAVE_GEOMETRY="$CACHE_DIR/SaveGeometry"

[ -f "$SAVE_GEOMETRY" ] || cat > "$SAVE_GEOMETRY" <<'EOF'
# 获得窗口ID
WID=$(xdotool getwindowfocus)

# 获得窗口的位置和大小等信息
XWININFO=$(xwininfo -stats -id $WID)
HEIGHT=$(echo "$XWININFO" | grep 'Height:' | awk '{print $2}')
WIDTH=$(echo "$XWININFO" | grep 'Width:' | awk '{print $2}')
Xa=$(echo "$XWININFO" | grep 'Absolute upper-left X' | awk '{print $4}')
Ya=$(echo "$XWININFO" | grep 'Absolute upper-left Y' | awk '{print $4}')
Xb=$(echo "$XWININFO" | grep 'Relative upper-left X' | awk '{print $4}')
Yb=$(echo "$XWININFO" | grep 'Relative upper-left Y' | awk '{print $4}')
X=$((Xa-Xb))
Y=$((Ya-Yb))

# $GEOMETRY_BORDER 文件记录了窗口管理器所设置的边框宽度和标题栏高度，
# 如果存在就读取它，以便调取其中的变量
if [ -f "$GEOMETRY_BORDER" ];then
	. "$GEOMETRY_BORDER"
else
	BX=0
	BY=0
fi

# 这才是初始化窗口应该调取的 X 和 Y 位置，
# 它们需要自身减去窗口的边框宽度和标题栏高度
X=$((X>BX?X-BX:0))
Y=$((Y>BY?Y-BY:0))

# 将窗口的位置和大小，输送到 $GEOMETRY 文件
echo "HEIGHT=$HEIGHT"	>  "$GEOMETRY"
echo "WIDTH=$WIDTH"		>> "$GEOMETRY"
echo "X=$X"				>> "$GEOMETRY"
echo "Y=$Y"				>> "$GEOMETRY"
EOF

if [ -f "$GEOMETRY" ];then
	. "$GEOMETRY"
else
	HEIGHT=760
	WIDTH=1280
	X=0
	Y=0
fi

### 启动主程序窗口 ###
cat <<EOF | sed '/<!--.*-->/d' | gtkdialog --class=GUIykdl --name=GUIykdl --stdin  --geometry +"$X"+"$Y"
<window title="GUIykdl" icon-name="GUIykdl" border-width="0" default-height="$HEIGHT" default-width="$WIDTH" opacity="$Opacity">
	<vbox>
		
		<!-- 菜单栏 -->
		<menubar>
			<menu use-underline="true">
				<menuitem use-underline="true" icon-name="gd-folder"  label="打开输出文件夹(_D)..." accel-key="0x44" accel-mods="4" height-request="32">
					<action>xdg-open "\$OUTPUT_DIR"</action>
				</menuitem>
				<menuitem use-underline="true" icon-name="gd-settings"  label="设置(_S)..." accel-key="0x53" accel-mods="4" height-request="32">
					<action>Settings.sh &</action>
				</menuitem>
				<menuitemseparator></menuitemseparator>
				<menuitem use-underline="true" icon-name="gd-x-circle"  label="退出(_Q)" accel-key="0x51" accel-mods="4" height-request="32">
					<action>exit:Quit</action>
				</menuitem>
				<label>菜单(_M)</label>
			</menu>
		</menubar>
		
		<text label=" " height-request="10"></text>
		
		<!-- 这里输入要下载的多媒体播放链接 -->
		<hbox>
			<text label=" " width-request="40"></text>
			<text label="URLs：" xalign="0"></text>
			<entry primary-icon-name="gd-play-circle" primary-icon-tooltip-text="-p 选项，直接调用播放器而不是下载；可以在下面的『播放程序』选项中选择播放器；推荐使用 mpv"
				secondary-icon-name="gd-delete" secondary-icon-tooltip-text="消除文本" file-monitor="true" auto-refresh="true" 
				tooltip-text="多个链接请用空格隔开；由于输入框对文本长度的限制，建议在输入时，长链接最好不要超过 5 个，短链接最好不要超过 12 个。超出长度限制（512个字符）的文本会被截断。">
				<variable>VideoURL</variable>
				<input file>"$URLPIPELINE"</input>
				<action signal="file-changed">refresh:VideoURL</action>
				<action signal="file-changed">sed -i "s/OUTPUT_NAME=.*/OUTPUT_NAME=\"\"/" "\$EDITABLE_OPTIONS"</action>
				<action signal="file-changed">refresh:OUTPUT_NAME</action>
				<action signal="file-changed">: > "\$FILE_INFO" &</action>
				<action signal="primary-icon-press">player.sh \$PLAYER  \$VideoURL &</action>
				<action signal="secondary-icon-press">clear:VideoURL</action>
				<action>save:VideoURL</action>
				<output file>"$URLPIPELINE"</output>
			</entry>
			<button tooltip-text="向终端发送下载任务指令" theme-icon-size="16" width-request="100" relief="1" focus-on-click="false">
				<label>"  开始下载"</label>
				<input file icon="gd-download-cloud"></input>
				<action condition="file_is_true($YKDL_RUN_STATUS)">info-dialog.sh true &</action>
				<action condition="file_is_false($YKDL_RUN_STATUS)">downloader.sh -d \$VideoURL</action>
				<action condition="file_is_false($YKDL_RUN_STATUS)">echo -n 1 > "\$NOTEBOOK_PAGE"</action>
				<action condition="file_is_false($YKDL_RUN_STATUS)">refresh:VTE</action>
				<action condition="file_is_false($YKDL_RUN_STATUS)">refresh:NOTEBOOK</action>
				<!-- action condition="command_is_true( [ \$PTR_BTN = 3 ] && echo true )" signal="button-release-event">echo -n "false" > "\$YKDL_RUN_STATUS"</action -->
			</button>
			<text label=" " width-request="40"></text>
		</hbox>
		
		<hbox space-expand="true" space-fill="true">
		
			<!-- 此框架储存了所支持的站点信息，以及操作时所反馈的信息 -->
			<vbox>
				<frame 信息回馈>
					<hbox homogeneous="true">
						<button tooltip-text="列出所有支持的多媒体网站，点击可以转到指定站点" theme-icon-size="16" width-request="100" 
							relief="1" focus-on-click="false">
							<label>"  站点"</label>
							<input file icon="gd-dribbble"></input>
							<action>echo -n 0 > "\$NOTEBOOK_PAGE"</action>
							<action>refresh:NOTEBOOK</action>
						</button>
						<button tooltip-text="终端用于显示命令回馈的信息，不建议输入并执行其它的命令。" 
							theme-icon-size="16" width-request="100" relief="1" focus-on-click="false">
							<label>"  终端"</label>
							<input file icon="gd-terminal"></input>
							<action>echo -n 1 > "\$NOTEBOOK_PAGE"</action>
							<action>refresh:NOTEBOOK</action>
						</button>
						<button tooltip-text="用于显示 -i 选项（点击『查看信息』按钮时启用该选项）所反馈的多媒体信息" theme-icon-size="16" 
							width-request="100" relief="1" focus-on-click="false">
							<label>"  信息"</label>                            
							<input file icon="gd-info"></input>
							<action>echo -n 2 > "\$NOTEBOOK_PAGE"</action>
							<action>refresh:NOTEBOOK</action>
						</button>
					</hbox>
					<notebook labels="站点|终端|信息" show-tabs="false" homogeneous="true" show-border="true" space-expand="true" space-fill="true">
						<tree column-header-active="false|false|false|false|false|false" column-resizeable="false|false|false|false|false|false" 
							column-visible="true|false|true|true|true|true" hover-selection="true" exported-column="1">
							<label>" 站点|网址|视频|直播|音频|备注"</label>
							<input>cat "\$SITE_LIST" | sed '/^#\|\[.*\]\|^[[:space:]]*$/d'</input>
							<variable>SitesURL</variable>
							<action signal="button-release-event">[ \$SitesURL ] && xdg-open \$SitesURL &</action>
							<action signal="key-release-event" condition="command_is_true([ \$KEY_RAW = 0x24 -o \$KEY_RAW = 0x41 ] && echo true)">[ \$SitesURL ] && xdg-open \$SitesURL &</action>
						</tree>
						<terminal argv0="/bin/bash" 
							envv0="TERM=xterm-256color" 
							current-directory-uri="/dev/shm" 
							font-name="$FontName"
							cursor-shape="2"
							background-tint-color="$BackgroundTintColor"
							text-background-color="$TextBackgroundColor"
							text-foreground-color="$TextForegroundColor"
							bold-foreground-color="$BoldForegroundColor"
							dim-foreground-color="$DimForegroundColor"
							cursor-background-color="$CursorBackgroundColor"
							highlight-background-color="$HighlightBackgroundColor"
							hscrollbar-policy="2"
							vscrollbar-policy="2"
							sensitive="true"
							pointer-autohide="true"
						>
							<variable>VTE</variable>
							<width>100</width>
							<input>cat "$CONSOLE_COMMAND"</input>
						</terminal>
						<edit editable="false" cursor-visible="false" auto-refresh="true" wrap-mode="1">
							<input file>"$FILE_INFO"</input>
						</edit>
						<variable>NOTEBOOK</variable>
						<input file>"$NOTEBOOK_PAGE"</input>
					</notebook>
				</frame>
			</vbox>
			
			<!-- 此框架提供了命令操作所需的参数选项 -->
			<frame 操作选项>
				<hbox>
					<button tooltip-text="保存一些临时设置，以便在下次启动时仍然保留" space-expand="false" space-fill="false" 
						theme-icon-size="16" width-request="100" relief="1" focus-on-click="false">
						<label>"  保存设置"</label>
						<input file icon="gd-tool"></input>
						<action>cat "\$EDITABLE_OPTIONS" > "\$DEFAULT_OPTIONS" ; info-dialog.sh succeeded &</action>
					</button>
					<text space-expand="true" space-fill="true" label=" "></text>
					<button tooltip-text="-i 选项，只显示多媒体信息而不进行下载" space-expand="false" space-fill="false" theme-icon-size="16" 
						width-request="100" relief="1" focus-on-click="false">
						<label>"  查看信息"</label>
						<input file icon="gd-eye"></input>
						<action condition="command_is_true( [ \"\$VideoURL\" ] && echo true )">[ ! -s "\$FILE_INFO" ] && set -- \$VideoURL && ykdl -i "\$@" > "\$FILE_INFO" 2>&1 &</action>
						<action condition="command_is_true( [ \"\$VideoURL\" ] && echo true )">echo -n 2 > "\$NOTEBOOK_PAGE"</action>
						<action condition="command_is_true( [ \"\$VideoURL\" ] && echo true )">refresh:NOTEBOOK</action>
					</button>
					<button space-fill="false" theme-icon-size="16" width-request="100" relief="1" focus-on-click="false" space-expand="false" 
						tooltip-text="-p 选项，调用 axel 来加速下载，这对于某些下载慢的站点比较有用，比如 B站；下载容器格式为 m3u8 的视频时，不建议使用该选项，比如爱奇艺、芒果TV等等。该选项会忽略除了输出路径和文件名称之外的其它选项。此外，这个功能的实现不是十分的完善，如果不是下载太慢的话，最好不要使用。">
						<label>"  调用 axel"</label>
						<input file icon="gd-anchor"></input>
						<action condition="file_is_true($YKDL_RUN_STATUS)">info-dialog.sh true &</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">downloader.sh -a \$VideoURL</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">echo -n 1 > "\$NOTEBOOK_PAGE"</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">refresh:VTE</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">refresh:NOTEBOOK</action>
					</button>
					<button tooltip-text="向终端发送 clear 命令，以清除终端屏幕；有任务时不能执行该命令" space-expand="false" 
						space-fill="false" theme-icon-size="16" width-request="100" relief="1" focus-on-click="false">
						<label>"  清除屏幕"</label>
						<input file icon="gd-airplay"></input>
						<action condition="file_is_false($YKDL_RUN_STATUS)">echo clear > "\$CONSOLE_COMMAND"</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">echo -n 1 > "\$NOTEBOOK_PAGE"</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">refresh:VTE</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">refresh:NOTEBOOK</action>
						<action condition="file_is_true($YKDL_RUN_STATUS)">info-dialog.sh clear &</action>
					</button>
					<button tooltip-text="-h 选项，在终端上打印 ykdl 的帮助信息；有任务时不能执行该命令" space-expand="false" 
						space-fill="false" theme-icon-size="16" width-request="100" relief="1" focus-on-click="false">
						<label>"  关于 ykdl"</label>
						<input file icon="gd-help-circle"></input>
						<action condition="file_is_false($YKDL_RUN_STATUS)">echo 'clear;ykdl -h' > "\$CONSOLE_COMMAND"</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">echo -n 1 > "\$NOTEBOOK_PAGE"</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">refresh:VTE</action>
						<action condition="file_is_false($YKDL_RUN_STATUS)">refresh:NOTEBOOK</action>
						<action condition="file_is_true($YKDL_RUN_STATUS)">info-dialog.sh clear &</action>
					</button>
				</hbox>
				<frame>
					<text xalign="0" label="对以下选项所做的修改，只有手动保存后，才能在下次启动时保留："></text>
					<hbox tooltip-text="-F 选项，指定视频格式代码 (具体查看 -i 选项 的输出)或级别；如果不勾选，则默认选择最高清晰度；格式代码不适用于音频下载">
						<checkbox focus-on-click="false" space-fill="false" space-expand="false">
							<label>视频质量：</label>
							<default>"$format_opt"</default>
							<variable>format_opt</variable>
							<action>if true enable:FORMAT</action>
							<action>if false disable:FORMAT</action>
							<action>sed -i "s/format_opt=.*/format_opt=\"\$format_opt\"/" "\$EDITABLE_OPTIONS"</action>
						</checkbox>
						<comboboxtext height-request="36" space-fill="true" space-expand="true">
							<variable>FORMAT</variable>
							<sensitive>"$format_opt"</sensitive>
							<default>"$FORMAT"</default>
							<item>8k</item>
							<item>4k</item>
							<item>2k</item>
							<item>BD</item>
							<item>TD</item>
							<item>HD</item>
							<item>SD</item>
							<item>LD</item>
							<action>sed -i "s/FORMAT=.*/FORMAT=\"\$FORMAT\"/" "\$EDITABLE_OPTIONS"</action>
						</comboboxtext>
					</hbox>
					<hbox tooltip-text="-O 选项，指定下载多媒体的文件名称，名称中不得包含被 shell 视为具有特殊意义的字符，否则将会自动替换为其变体符号（非中文标点符号）；如果输入框为空，则由 ykdl 自行决定下载文件的名称；当有多个链接或启用了列表模式（-l 选项）时，该选项无效">
						<checkbox focus-on-click="false" inconsistent="true">
							<label>文件名称：</label>
							<default>true</default>
							
							<!-- 将一些代码注释封存 -->
							<!-- default>"$output_name_opt"</default -->
							<!-- variable>output_name_opt</variable -->
							<!-- action>if true enable:OUTPUT_NAME</action -->
							<!-- action>if false disable:OUTPUT_NAME</action -->
							<!-- action>sed -i "s/output_name_opt=.*/output_name_opt=\"\$output_name_opt\"/" "\$EDITABLE_OPTIONS"</action -->
							
						</checkbox>
						<entry primary-icon-name="gd-file-plus" primary-icon-tooltip-text="以『艺术家 - 歌名』 的格式自动获取文件名称，部分站点可能无效" 
							secondary-icon-name="gd-delete" secondary-icon-tooltip-text="消除文本">
							<variable>OUTPUT_NAME</variable>
							<!-- sensitive>"$output_name_opt"</sensitive -->
							<input>cat "\$EDITABLE_OPTIONS" | grep "OUTPUT_NAME=" | cut -d\" -f2 </input>
							<action signal="primary-icon-press" condition="command_is_true( [ \"\$VideoURL\" ] && echo true )">text-filter.sh -i \$VideoURL</action>
							<action signal="primary-icon-press" condition="command_is_true( [ \"\$VideoURL\" ] && echo true )">refresh:OUTPUT_NAME</action>
							
							<!-- 将一些代码注释封存 -->
							<!-- action signal="primary-icon-press" condition="command_is_true( [ \"\$VideoURL\" ] && echo true )">echo -n 2 > "\$NOTEBOOK_PAGE"</action -->
							<!-- action signal="primary-icon-press" condition="command_is_true( [ \"\$VideoURL\" ] && echo true )">refresh:NOTEBOOK</action -->
							
							<action signal="secondary-icon-press">clear:OUTPUT_NAME</action>
							<action>text-filter.sh -I "\$OUTPUT_NAME"</action>
							<action>refresh:OUTPUT_NAME</action>
						</entry>
					</hbox>
					<hbox tooltip-text="--proxy 选项，指定网络代理，采用『 [协议://]主机:端口 』的文本形式；HTTP 代理会传递给播放器，即设置播放器的系统代理环境变量；如果不勾选或者输入框为空，则默认使用系统代理设置">
						<checkbox focus-on-click="false">
							<label>网络代理：</label>
							<default>"$proxy_opt"</default>
							<variable>proxy_opt</variable>
							<action>if true enable:PROXY</action>
							<action>if false disable:PROXY</action>
							<action>sed -i "s/proxy_opt=.*/proxy_opt=\"\$proxy_opt\"/" "\$EDITABLE_OPTIONS"</action>
						</checkbox>
						<entry secondary-icon-name="gd-delete" secondary-icon-tooltip-text="消除文本">
							<variable>PROXY</variable>
							<sensitive>"$proxy_opt"</sensitive>
							<input>cat "\$EDITABLE_OPTIONS" | grep "PROXY=" | cut -d\" -f2 </input>
							<action signal="secondary-icon-press">clear:PROXY</action>
							<action>text-filter.sh -t "\$PROXY"</action>
							<action>refresh:PROXY</action>
						</entry>
					</hbox>
					<hbox tooltip-text="-t 选项，设置网络传输超时时长；如果不勾选，则默认为 60 秒">
						<checkbox focus-on-click="false" space-fill="false" space-expand="false">
							<label>超时时长：</label>
							<default>"$timeout_opt"</default>
							<variable>timeout_opt</variable>
							<action>if true enable:TIMEOUT</action>
							<action>if false disable:TIMEOUT</action>
							<action>sed -i "s/timeout_opt=.*/timeout_opt=\"\$timeout_opt\"/" "\$EDITABLE_OPTIONS"</action>
						</checkbox>
						<spinbutton range-min="0" range-max="3600" space-fill="true" space-expand="true">
							<default>"$TIMEOUT"</default>
							<variable>TIMEOUT</variable>
							<sensitive>"$timeout_opt"</sensitive>
							<action>sed -i "s/TIMEOUT=.*/TIMEOUT=\"\$TIMEOUT\"/" "\$EDITABLE_OPTIONS"</action>
							<action signal="changed">sed -i "s/TIMEOUT=.*/TIMEOUT=\"\$TIMEOUT\"/" "\$EDITABLE_OPTIONS"</action>
						</spinbutton>
					</hbox>
					<hbox tooltip-text="--fail-retry-eta 选项，如果不勾选，则默认 3600 秒；如果设置数值大于剩余完成时间，则自动重试失败的下载；设置为 0 时将不重试失败的任务">
						<checkbox focus-on-click="false" space-fill="false" space-expand="false">
							<label>重试时长：</label>
							<default>"$fail_retry_eta_opt"</default>
							<variable>fail_retry_eta_opt</variable>
							<action>if true enable:FAIL_RETRY_ETA</action>
							<action>if false disable:FAIL_RETRY_ETA</action>
							<action>sed -i "s/fail_retry_eta_opt=.*/fail_retry_eta_opt=\"\$fail_retry_eta_opt\"/" "\$EDITABLE_OPTIONS"</action>
						</checkbox>
						<spinbutton range-min="0" range-max="36000" range-step="10" space-fill="true" space-expand="true">
							<default>"$FAIL_RETRY_ETA"</default>
							<variable>FAIL_RETRY_ETA</variable>
							<sensitive>"$fail_retry_eta_opt"</sensitive>
							<action>sed -i "s/FAIL_RETRY_ETA=.*/FAIL_RETRY_ETA=\"\$FAIL_RETRY_ETA\"/" "\$EDITABLE_OPTIONS"</action>
							<action signal="changed">sed -i "s/FAIL_RETRY_ETA=.*/FAIL_RETRY_ETA=\"\$FAIL_RETRY_ETA\"/" "\$EDITABLE_OPTIONS"</action>
						</spinbutton>
					</hbox>
					<hbox tooltip-text="-j 选项，指定最多可同时下载的任务数量">
						<checkbox focus-on-click="false" space-fill="false" space-expand="false">
							<label>任务数量：</label>
							<default>"$jobs_opt"</default>
							<variable>jobs_opt</variable>
							<action>if true enable:JOBS</action>
							<action>if false disable:JOBS</action>
							<action>sed -i "s/jobs_opt=.*/jobs_opt=\"\$jobs_opt\"/" "\$EDITABLE_OPTIONS"</action>
						</checkbox>
						<spinbutton space-fill="true" space-expand="true">
							<default>"$JOBS"</default>
							<variable>JOBS</variable>
							<sensitive>"$jobs_opt"</sensitive>
							<action>sed -i "s/JOBS=.*/JOBS=\"\$JOBS\"/" "\$EDITABLE_OPTIONS"</action>
							<action signal="changed">sed -i "s/JOBS=.*/JOBS=\"\$JOBS\"/" "\$EDITABLE_OPTIONS"</action>
						</spinbutton>
					</hbox>
					<checkbox tooltip-text="-l 选项，将所给的视频 URL 作为播放列表进行下载；注意，对于某些只是单个视频的播放链接，勾选此项会导致下载失败" focus-on-click="false">
						<label>将所给的视频 URL 作为播放列表进行下载</label>
						<default>"$playlist_opt"</default>
						<variable>playlist_opt</variable>
						<action>if true enable:start_opt</action>
						<action>if false disable:start_opt</action>
						<action condition="active_is_true(start_opt)">if false activate:start_opt</action>
						<action>sed -i "s/playlist_opt=.*/playlist_opt=\"\$playlist_opt\"/" "\$EDITABLE_OPTIONS"</action>
					</checkbox>
					<hbox tooltip-text="-s 选项，配合 -l 使用，从指定的位置开始下载列表">
						<text label=" " width-request="100"></text>
						<checkbox focus-on-click="false" space-fill="false" space-expand="false">
							<label>指定位置：</label>
							<default>"$start_opt"</default>
							<variable>start_opt</variable>
							<sensitive>"$start_opt"</sensitive>
							<action>if true enable:START</action>
							<action>if false disable:START</action>
							<action>sed -i "s/start_opt=.*/start_opt=\"\$start_opt\"/" "\$EDITABLE_OPTIONS"</action>
						</checkbox>
						<spinbutton space-fill="true" space-expand="true">
							<default>"$START"</default>
							<variable>START</variable>
							<sensitive>"$start_opt"</sensitive>
							<action>sed -i "s/START=.*/START=\"\$START\"/" "\$EDITABLE_OPTIONS"</action>
							<action signal="changed">sed -i "s/START=.*/START=\"\$START\"/" "\$EDITABLE_OPTIONS"</action>
						</spinbutton>
					</hbox>
					<checkbox tooltip-text="-k 选项，允许不安全的 SSL 连接，该选项会忽略 SSL 错误" focus-on-click="false">
						<label>允许不安全的 SSL 连接</label>
						<default>"$insecure_opt"</default>
						<variable>insecure_opt</variable>
						<action>sed -i "s/insecure_opt=.*/insecure_opt=\"\$insecure_opt\"/" "\$EDITABLE_OPTIONS"</action>
					</checkbox>
					<checkbox tooltip-text="--no-merge 选项，不合并视频分片；勾选此项之后，如果是 m3u8 封装格式的链接，下载的视频文件会以多个片段的形式保存。" focus-on-click="false">
						<label>不合并视频分片</label>
						<default>"$no_merge_opt"</default>
						<variable>no_merge_opt</variable>
						<action>sed -i "s/no_merge_opt=.*/no_merge_opt=\"\$no_merge_opt\"/" "\$EDITABLE_OPTIONS"</action>
					</checkbox>
					<checkbox tooltip-text="--no-sub 选项，不要下载字幕（字幕、歌词、弹幕、…），大多数站点不支持字幕，所以无需勾选" focus-on-click="false">
						<label>不下载字幕文件</label>
						<default>"$no_sub_opt"</default>
						<variable>no_sub_opt</variable>
						<action>sed -i "s/no_sub_opt=.*/no_sub_opt=\"\$no_sub_opt\"/" "\$EDITABLE_OPTIONS"</action>
					</checkbox>
					<checkbox tooltip-text="--no-fail-confirm 选项，重试失败的下载时无需等待人工确认，非阻塞，适合任务式调用" focus-on-click="false">
						<label>重试失败的下载时无需等待人工确认，非阻塞，适合任务式调用</label>
						<default>"$no_fail_confirm_opt"</default>
						<variable>no_fail_confirm_opt</variable>
						<action>sed -i "s/no_fail_confirm_opt=.*/no_fail_confirm_opt=\"\$no_fail_confirm_opt\"/" "\$EDITABLE_OPTIONS"</action>
					</checkbox>
					<checkbox tooltip-text="--debug 选项，打印调试信息" focus-on-click="false">
						<label>打印调试信息</label>
						<default>"$debug_opt"</default>
						<variable>debug_opt</variable>
						<action>sed -i "s/debug_opt=.*/debug_opt=\"\$debug_opt\"/" "\$EDITABLE_OPTIONS"</action>
					</checkbox>
					<hseparator></hseparator>
					<text xalign="0" label="对以下选项所做的修改，无需保存，也会在下次启动时保留："></text>
					<hbox tooltip-text="-o 选项，指定下载视频的保存目录">
						<checkbox focus-on-click="false" inconsistent="true">
							<label>输出路径：</label>
							<default>true</default>
						</checkbox>
						<entry secondary-icon-name="gd-folder-plus" secondary-icon-tooltip-text="点击选择目录" editable="false"
							fs-folder="$OUTPUT_DIR" fs-filters-mime="inode/directory" fs-title="选择目录" fs-action="folder">
							<variable>OUTPUT_DIR</variable>
							<input>cat "\$EDITABLE_OPTIONS" | grep "OUTPUT_DIR=" | cut -d\" -f2 </input>
							<action signal="secondary-icon-press">fileselect:OUTPUT_DIR</action>
							<action>sed -i "s|OUTPUT_DIR=.*|OUTPUT_DIR=\"\$OUTPUT_DIR\"|" "\$DEFAULT_OPTIONS"</action>
							<action>sed -i "s|OUTPUT_DIR=.*|OUTPUT_DIR=\"\$OUTPUT_DIR\"|" "\$EDITABLE_OPTIONS"</action>
						</entry>
					</hbox>
					<hbox tooltip-text="设置 -p 选项所要调用的播放器">
						<checkbox focus-on-click="false" inconsistent="true" space-fill="false" space-expand="false">
							<label>播放程序：</label>
							<default>true</default>
						</checkbox>
						<comboboxtext height-request="36" space-fill="true" space-expand="true" wrap-width="3">
							<variable>PLAYER</variable>
							<default>"$PLAYER"</default>
							<input>cat "\$PLAYER_LIST" | sed '/^#\|\[.*\]\|^[[:space:]]*$/d'</input>
							<action>sed -i "s/PLAYER=.*/PLAYER=\"\$PLAYER\"/" "\$DEFAULT_OPTIONS"</action>
							<action>sed -i "s/PLAYER=.*/PLAYER=\"\$PLAYER\"/" "\$EDITABLE_OPTIONS"</action>
							<action>info-dialog.sh player \$PLAYER &</action>
						</comboboxtext>
					</hbox>
				</frame>
			</frame>
		</hbox>
	</vbox>
	<action signal="show">refresh:VTE</action>
	
	<!-- xdotool 命令也可以控制窗口的初始位置 -->
	<!-- action signal="map-event">xdotool getactivewindow windowmove $X $Y</action -->
	
	<!-- 当窗口被移动、拉伸或最大化时，记录窗口的位置和大小 -->
	<action signal="configure-event">. "\$SAVE_GEOMETRY"</action>
	
	<!-- 获得窗口管理器所设置的边框宽度和标题栏高度 -->
	<action signal="map-event">[ -f "\$GEOMETRY_BORDER" ] || { . "\$SAVE_GEOMETRY" && cat "\$GEOMETRY" > "\$GEOMETRY_BORDER"; sed -i 's/X=/BX=/;s/Y=/BY=/;/^W\|^H/d' "\$GEOMETRY_BORDER" ;}</action>
</window>
EOF

SETTINGS_WINDOW_PID=$(ps -ef | grep "gtkdialog --class=GUIykdlSettings --name=GUIykdlSettings --program=Settings_WINDOW"  | grep -v grep | awk '{printf $2}')
[ "$SETTINGS_WINDOW_PID" ] && kill -9 $SETTINGS_WINDOW_PID
> "$URLPIPELINE"
sed -i 's/OUTPUT_NAME=.*/OUTPUT_NAME=""/' "$DEFAULT_OPTIONS"
exit
